AbstractProjectAndTaskGetter.getProject   A
last analyzed

Complexity

Conditions 3

Size

Total Lines 12
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 10
dl 0
loc 12
c 0
b 0
f 0
rs 9.9
cc 3
1
import { Task } from 'src/Domain/Task/Task.entity';
2
import { Project } from 'src/Domain/Project/Project.entity';
3
import { ITaskRepository } from 'src/Domain/Task/Repository/ITaskRepository';
4
import { IProjectRepository } from 'src/Domain/Project/Repository/IProjectRepository';
5
import { TaskNotFoundException } from 'src/Domain/Task/Exception/TaskNotFoundException';
6
import { ProjectNotFoundException } from 'src/Domain/Project/Exception/ProjectNotFoundException';
7
8
export abstract class AbstractProjectAndTaskGetter {
9
  constructor(
10
    private readonly taskRepository: ITaskRepository,
11
    private readonly projectRepository: IProjectRepository
12
  ) {}
13
14
  protected async getTask(taskId?: string): Promise<Task | null> {
15
    if (!taskId) {
16
      return null;
17
    }
18
19
    const task = await this.taskRepository.findOneById(taskId);
20
    if (!task) {
21
      throw new TaskNotFoundException();
22
    }
23
24
    return task;
25
  }
26
27
  protected async getProject(projectId?: string): Promise<Project | null> {
28
    if (!projectId) {
29
      return null;
30
    }
31
32
    const project = await this.projectRepository.findOneById(projectId);
33
    if (!project) {
34
      throw new ProjectNotFoundException();
35
    }
36
37
    return project;
38
  }
39
}
40